From eb9223c008ccf1c2faabf512645894d3e4efe157 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 9 Sep 2012 18:28:48 -0400 Subject: [PATCH] Be more strict in ignoring ineffective modifiers After my recent fix for this, nautilus was still having problems telling keeping F10 and Shift-F10 apart. With this change, we are treating levels with the same symbol like inactive levels, ignoring them entirely. --- gdk/x11/gdkkeys-x11.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gdk/x11/gdkkeys-x11.c b/gdk/x11/gdkkeys-x11.c index 9d06cbaeaf..4dba9d406f 100644 --- a/gdk/x11/gdkkeys-x11.c +++ b/gdk/x11/gdkkeys-x11.c @@ -1113,7 +1113,7 @@ MyEnhancedXkbTranslateKeyCode(register XkbDescPtr xkb, int found = 0; for (i=0,entry=type->map;imap_count;i++,entry++) { - if (!entry->active) + if (!entry->active || syms[col+entry->level] == syms[col]) continue; if (mods_rtrn) { int bits = 0; @@ -1130,7 +1130,7 @@ MyEnhancedXkbTranslateKeyCode(register XkbDescPtr xkb, * and F10 anymore). And don't add modifiers that are * explicitly marked as preserved, either. */ - if ((bits == 1 && syms[col+entry->level] != syms[col]) || + if (bits == 1 || (mods&type->mods.mask) == entry->mods.mask) { if (type->preserve) @@ -1140,7 +1140,7 @@ MyEnhancedXkbTranslateKeyCode(register XkbDescPtr xkb, } } - if (!found&&((mods&type->mods.mask)==entry->mods.mask)) { + if (!found && ((mods&type->mods.mask) == entry->mods.mask)) { col+= entry->level; if (type->preserve) preserve= type->preserve[i].mask; -- 2.30.2